package com.xf.system.common.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xf.system.common.mapper.RoleMapper;
import com.xf.system.common.model.Role;
import com.xf.system.http.req.role.RoleListReqDTO;
import com.xf.system.http.vo.role.RoleDetailVO;
import com.xf.system.http.vo.user.UserRoleDetailVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * @author xiefengf
 */
@Slf4j
@Service
public class RoleService extends ServiceImpl<RoleMapper, Role> {

    @Resource
    private RoleMapper roleMapper;

    /**
     * 查询当前用户对应的角色信息
     * @param id 用户主键id
     * @return 角色列表
     */
    public List<UserRoleDetailVO> selectRoleByUid(Long id) {
        return roleMapper.selectRoleByUid(id);
    }

    /**
     * 通过角色id查询角色详情信息
     * @param id 角色主键id
     * @return 角色详情信息
     */
    public RoleDetailVO selectRoleByRid(Long id) {
        return roleMapper.selectRoleByRid(id);
    }

    /**
     * 根据条件分页查询角色列表
     * @param reqDto 分页条件+查询条件
     * @return 角色分页集合信息
     */
    public IPage<RoleDetailVO> selectRoleList(RoleListReqDTO reqDto) {
        Page<RoleDetailVO> page = new Page<>(reqDto.getPageNumber(), reqDto.getPageSize());
        return roleMapper.selectRoleList(page,reqDto);
    }

    /**
     * 根据角色名查询用户信息
     * @param roleName 用户登录名
     * @return 角色详情信息
     */
    public Role selectRoleByRoleName(String roleName) {
        return roleMapper.selectRoleByRoleName(roleName);
    }

    /**
     * 根据角色权限字符串查询用户信息
     * @param roleKey 用户登录名
     * @return 角色详情信息
     */
    public Role selectRoleByRoleKey(String roleKey) {
        return roleMapper.selectRoleByRoleKey(roleKey);
    }

}
